package com.log;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
/*
 1. 日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。 
 	日志记录器(Logger)的可用级别Level (不包括自定义级别 Level)，
  	以下内容就是摘自log4j API (http://jakarta.apache.org/log4j/docs/api/index.html):
3.static Level DEBUG      
5.DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。   
7.static Level INFO     
9.INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。    
11.static Level WARN    
13.WARN level表明会出现潜在错误的情形。   
15.static Level ERROR    
17.ERROR level指出虽然发生错误事件，但仍然不影响系统的继续运行。   
19.static Level FATAL    
21.FATAL level指出每个严重的错误事件将会导致应用程序的退出。   
23.另外，还有两个可用的特别的日志记录级别: (以下描述来自log4j API http://jakarta.apache.org/log4j/docs/api/index.html):     
25.static Level ALL    
27.ALL Level是最低等级的，用于打开所有日志记录。    
29.static Level OFF    
31.OFF Level是最高等级的，用于关闭所有日志记录。    
日志记录器（Logger）的行为是分等级的。如下表所示：   分 为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。
Log4j建议只使用四个级别，优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里定义的级别，您可以控制到应用程序中相应级别的日志信息的开关。
比如在这里定义了INFO级别， 则应用程序中所有DEBUG级别的日志信息将不被打印出来
 */
public class LogUtil {

	private static Logger log=Logger.getLogger("");//LogUtil.class
	
	static {
		Properties p=new Properties();
		try {
			InputStream is=LogUtil.class.getResourceAsStream("log4j.properties");		
			p.load(is);
			is.close();
			PropertyConfigurator.configure(p);
			//System.out.println("OK");
		} catch (FileNotFoundException e) {
			warn(e.getMessage());
		} catch (IOException e) {
			warn(e.getMessage());
		}
	}
		
	public static void info(Object message){
		log.info(message);
	}	
	public static void info(Throwable t){
		log.info(t.getMessage(),t);
	}
	public static void debug(Object message){
		log.debug(message);
	}
	public static void debug(Throwable t){
		log.debug(t.getMessage(),t);
	}
	public static void warn(Object message){
		log.warn(message);
	}
	public static void warn(Throwable t){
		log.warn(t.getMessage(),t);
	}
	public static void error(Object message){
		log.error(message);
	}
	public static void error(Throwable t){
		log.error(t.getMessage(),t);
	}
	 
	
	public static void test(){
		//在后台输出 
	    Logger logger1 = Logger.getLogger("console"); 
	    logger1.debug("debug!!!"); 
	    logger1.info("info!!!"); 
	    logger1.warn("warn!!!"); 
	    logger1.error("error!!!"); 
	    logger1.fatal("fatal!!!"); 

	    //在NT系统日志输出 
	    Logger logger2 = Logger.getLogger("NTlog"); 
	    //NTEventLogAppender nla = new NTEventLogAppender(); 
	    logger2.debug("debug!!!"); 
	    logger2.info("info!!!"); 
	    logger2.warn("warn!!!"); 
	    logger2.error("error!!!"); 
	    //只有这个错误才会写入2000日志 
	    logger2.fatal("fatal!!!"); 

	  //把日志发送到mail 
	    Logger logger3 = Logger.getLogger("MailLog"); 
	    //SMTPAppender sa = new SMTPAppender(); 
	    logger3.warn("warn!!!"); 
	    logger3.error("error!!!"); 
	    logger3.fatal("fatal!!!"); 
	}
	public static void test1(int i) {
		for(int k=1;k<=i;k++){
			System.out.println("p"+(k<10?"0"+k:k)+" varchar(2),");
		}
	}
	public static void main(String[] args) throws FileNotFoundException {
		//System.out.println(System.getProperty("user.home"));
		/*try {
			System.out.println(1/0);
		} catch (Exception e) {
			e.printStackTrace();
			info(e);
		}*/
		test();
	}

}
